package com.ddone.demo.controller;

import com.ddone.demo.bean.Product;
import com.ddone.demo.bean.Student;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author ddone
 * @date 2024/3/23-16:48
 */
@Controller
@RequestMapping("/type")
@Slf4j
public class TypeConverterController {


    /**
     * 保存商品接口
     * @return 返回页面
     * Todo: 明确是否绑定成功, 如果绑定失败, 要知道是哪个字段失败了
     *  实现方案, 在形参列表,最后一个位, 添加一个BindingResult对象,这个对象是绑定结果对象
     *  它可以判定绑定成功与否
     */
    @PostMapping("/product")
    public String save(Product product, BindingResult bindingResult){
        // 有了这个参数,不会直接给前端返回400 bad request, 会进入此方法,需要自行处理
        log.warn("product= "+product);


        if(bindingResult.hasErrors()){
            // 获取错误的描述
            bindingResult.getFieldErrors().forEach(System.out::println);
            // 如果有绑定错误,返回结果为true
            // 跳转展示页面, 混合开发创建的提示
            // 如果有错误,他会将错误放到共享域对象 key是对应绑定实体的形参变量名


            return "error";
        }
        return "type-convert";
    }

    @PostMapping("student")
    public String saveStudent(Student student){
        log.warn("student = " + student);
        return "type-convert";
    }
}
